# 博客代码：https://www.bilibili.com/video/BV1Z4411o7TA?p=10&spm_id_from=pageDriver

from selenium import webdriver

# 1. 创建 WebDriver 对象，指明使用chrome浏览器驱动
wd = webdriver.Chrome(r'D:\soft\google\chromedriver.exe')

# 2. 防止页面加载过慢，请求是时候，如果找不到元素，
# 则每个半秒钟去界面上查看一次，直到找到该元素或超过10秒
wd.implicitly_wait(10)

wd.get('https://www.baidu.com')
element = wd.find_element_by_id('kw').send_keys("中国你好")
element = wd.find_element_by_id("su")
element.click();

# 选择器用法1
# 1. 使用css选择器 ; .表示class； #表示id
# messageEle = wd.find_element_by_css_selector(".result")
# 等效写法
# messageEle = wd.find_element_by_class_name("result")


# 注意： 比如要定位id=2的元素，则在选择时，需要添加：【\\3】,且后面追加一个【空字】符
messageEle = wd.find_element_by_css_selector('#\\32 ')

# 选择器用法2
# 2. 不写.或#，则表示查找标签
# messageEle = wd.find_element_by_css_selector("span")

# 选择器用法3
# 3.【>】 号表示选择'直接子元素'  ；只要符合条件的css选择器的方法都行
# elementBtn = wd.find_element_by_css_selector("body > div > a > button")
# elementBtn = wd.find_element_by_css_selector(".btn > div > a > button")

# 选择器用法4
# 4.【  】一个或多个空格符表示选择'后代子元素'；只要符合条件的css选择器的方法都行
elementBtn = wd.find_element_by_css_selector("body  div  a  button")


# 选择器用法5
# css 选择器支持通过任何属性来选择元素，语法是用一个方括号 []
# 比如要选择上面的a元素，就可以使用 [href="http://www.miitbeian.gov.cn"] 。
# 这个表达式的意思是，选择 属性href值为 http://www.miitbeian.gov.cn 的元素
element = wd.find_element_by_css_selector('[href="http://www.miitbeian.gov.cn"]')
# 标签名为div，且href属性值为http://www.miitbeian.gov.cn的元素。属性值用单引号，双引号都可以。
element = wd.find_element_by_css_selector('div[href="http://www.miitbeian.gov.cn"]')
# .plant 和 [中间不可有空格
element = wd.find_element_by_css_selector('.plant[href="http://www.miitbeian.gov.cn"]')
# 或者组合使用
element = wd.find_element_by_css_selector('#ok .plant > div[href="http://www.miitbeian.gov.cn"]')

# 6. 验证是否表达式是否符合条件
# 选择器如何验证：在chrom浏览器的Element中，ctrl+F搜索状态， 直接写选择器，符合条件会高亮
# 比如： div>span

wd.find_element_by_css_selector('.btn > div > a > button[href="http://www.miitbeian.gov.cn"]')

messageHtml = messageEle.get_attribute("outerHTML")
print(messageHtml)

wd.quit();